home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1997 April / macformat-049.iso / mac / Shareware Plus / Developers / dropg++ / usr / include / netiso / iso.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  6.8 KB  |  196 lines  |  [TEXT/R*ch]

  1. /*-
  2.  * Copyright (c) 1991, 1993
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)iso.h    8.1 (Berkeley) 6/10/93
  34.  */
  35.  
  36. /***********************************************************
  37.         Copyright IBM Corporation 1987
  38.  
  39.                       All Rights Reserved
  40.  
  41. Permission to use, copy, modify, and distribute this software and its 
  42. documentation for any purpose and without fee is hereby granted, 
  43. provided that the above copyright notice appear in all copies and that
  44. both that copyright notice and this permission notice appear in 
  45. supporting documentation, and that the name of IBM not be
  46. used in advertising or publicity pertaining to distribution of the
  47. software without specific, written prior permission.  
  48.  
  49. IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  50. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  51. IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  52. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  53. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  54. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  55. SOFTWARE.
  56.  
  57. ******************************************************************/
  58.  
  59. /*
  60.  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
  61.  */
  62. /* $Header: iso.h,v 4.9 88/09/11 18:06:38 hagens Exp $ */
  63. /* $Source: /usr/argo/sys/netiso/RCS/iso.h,v $ */
  64.  
  65. #ifndef __ISO__
  66. #define __ISO__
  67.  
  68. /*
  69.  *    Return true if this is a multicast address
  70.  *    This assumes that the bit transmission is lsb first. This 
  71.  *    assumption is valid for 802.3 but not 802.5. There is a
  72.  *    kludge to get around this for 802.5 -- see if_lan.c
  73.  *    where subnetwork header is setup.
  74.  */
  75. #define    IS_MULTICAST(snpa)\
  76.     ((snpa)[0] & 0x01)
  77.     
  78. /*
  79.  * Protocols
  80.  */
  81. #define    ISOPROTO_TCP    6        /* IETF experiment */
  82. #define    ISOPROTO_UDP    17        /* IETF experiment */
  83. #define    ISOPROTO_TP0    25        /* connection oriented transport protocol */
  84. #define    ISOPROTO_TP1    26        /* not implemented */
  85. #define    ISOPROTO_TP2    27        /* not implemented */
  86. #define    ISOPROTO_TP3    28        /* not implemented */
  87. #define    ISOPROTO_TP4    29        /* connection oriented transport protocol */
  88. #define    ISOPROTO_TP        ISOPROTO_TP4     /* tp-4 with negotiation */
  89. #define    ISOPROTO_CLTP    30        /* connectionless transport (not yet impl.) */
  90. #define    ISOPROTO_CLNP    31        /* connectionless internetworking protocol */
  91. #define    ISOPROTO_X25    32        /* cons */
  92. #define    ISOPROTO_INACT_NL    33    /* inactive network layer! */
  93. #define    ISOPROTO_ESIS    34        /* ES-IS protocol */
  94. #define    ISOPROTO_INTRAISIS    35        /* IS-IS protocol */
  95. #define    ISOPROTO_IDRP    36        /* Interdomain Routing Protocol */
  96.  
  97. #define    ISOPROTO_RAW    255        /* raw clnp */
  98. #define    ISOPROTO_MAX    256
  99.  
  100. #define    ISO_PORT_RESERVED        1024
  101. #define    ISO_PORT_USERRESERVED    5000
  102. /*
  103.  * Port/socket numbers: standard network functions
  104.  * NOT PRESENTLY USED
  105.  */
  106. #define    ISO_PORT_MAINT        501
  107. #define    ISO_PORT_ECHO        507
  108. #define    ISO_PORT_DISCARD    509
  109. #define    ISO_PORT_SYSTAT        511
  110. #define    ISO_PORT_NETSTAT    515
  111. /*
  112.  * Port/socket numbers: non-standard application functions
  113.  */
  114. #define ISO_PORT_LOGIN        513
  115. /*
  116.  * Port/socket numbers: public use
  117.  */
  118. #define ISO_PORT_PUBLIC        1024        /* high bit set --> public */
  119.  
  120. /*
  121.  *    Network layer protocol identifiers
  122.  */
  123. #define ISO8473_CLNP    0x81
  124. #define    ISO9542_ESIS    0x82
  125. #define ISO9542X25_ESIS    0x8a
  126. #define ISO10589_ISIS        0x83
  127. #define ISO8878A_CONS        0x84
  128. #define ISO10747_IDRP        0x85
  129.  
  130.  
  131. #ifndef IN_CLASSA_NET
  132. #include <netinet/in.h>
  133. #endif /* IN_CLASSA_NET */
  134.  
  135.  
  136.  
  137. /* The following looks like a sockaddr
  138.  * to facilitate using tree lookup routines */
  139. struct iso_addr {
  140.     u_char    isoa_len;                        /* length (in bytes) */
  141.     char    isoa_genaddr[20];                /* general opaque address */
  142. };
  143.  
  144. struct sockaddr_iso {
  145.     u_char                 siso_len;            /* length */
  146.     u_char                 siso_family;        /* family */
  147.     u_char                siso_plen;            /* presentation selector length */
  148.     u_char                siso_slen;            /* session selector length */
  149.     u_char                siso_tlen;            /* transport selector length */
  150.     struct     iso_addr    siso_addr;            /* network address */
  151.     u_char                siso_pad[6];        /* space for gosip v2 sels */
  152.                                             /* makes struct 32 bytes long */
  153. };
  154. #define siso_nlen siso_addr.isoa_len
  155. #define siso_data siso_addr.isoa_genaddr
  156.  
  157. #define TSEL(s) ((caddr_t)((s)->siso_data + (s)->siso_nlen))
  158.  
  159. #define SAME_ISOADDR(a, b) \
  160.     (bcmp((a)->siso_data, (b)->siso_data, (unsigned)(a)->siso_nlen)==0)
  161. /*
  162.  * The following are specific values for siso->siso_data[0],
  163.  * otherwise known as the AFI:
  164.  */
  165. #define    AFI_37        0x37    /* bcd of "37" */
  166. #define AFI_OSINET    0x47    /* bcd of "47" */
  167. #define AFI_RFC986    0x47    /* bcd of "47" */
  168. #define    AFI_SNA        0x00    /* SubNetwork Address; invalid really...*/
  169.  
  170. #ifdef KERNEL
  171.  
  172. extern int iso_netmatch();
  173. extern int iso_hash(); 
  174. extern int iso_addrmatch();
  175. extern struct iso_ifaddr *iso_iaonnetof();
  176. extern    struct domain isodomain;
  177. extern    struct protosw isosw[];
  178.  
  179. #else
  180. /* user utilities definitions from the iso library */
  181.  
  182. #include <sys/cdefs.h>
  183.  
  184. __BEGIN_DECLS
  185. struct iso_addr *iso_addr __P((const char *));
  186. char *iso_ntoa __P((const struct iso_addr *));
  187.  
  188. /* THESE DON'T EXIST YET */
  189. struct hostent *iso_gethostbyname(), *iso_gethostbyaddr();
  190. __END_DECLS
  191.  
  192. #endif /* KERNEL */
  193.  
  194. #define _offsetof(t, m) ((int)((caddr_t)&((t *)0)->m))
  195. #endif /* __ISO__ */
  196.